package com.erp.freight.service;



import com.ruoyi.freight.api.domain.AeProductFreight;
import com.ruoyi.freight.api.domain.ErpProductExistingFreightRecord;
import com.erp.freight.domain.ErpProductFreight;
import com.erp.freight.domain.bo.ErpProductFreightBo;
import com.erp.freight.domain.vo.ErpProductFreightVo;
import com.ruoyi.common.core.domain.PageQuery;
import com.ruoyi.common.core.web.oldPage.TableDataInfo;

import java.math.BigDecimal;
import java.util.Collection;
import java.util.List;

/**
 * 运费试算模版（各物流公司运费格读取）Service接口
 *
 * @author erp
 * @date 2023-06-23
 */
public interface IErpProductFreightService {

    /**
     * 查询运费试算模版（各物流公司运费格读取）
     */
    ErpProductFreightVo queryById(Long id);

    /**
     * 查询运费试算模版（各物流公司运费格读取）列表
     */
    TableDataInfo<ErpProductFreightVo> queryPageList(ErpProductFreightBo bo, PageQuery pageQuery);

    /**
     * 查询运费试算模版（各物流公司运费格读取）列表
     */
    List<ErpProductFreightVo> queryList(ErpProductFreightBo bo);

    /**
     * 新增运费试算模版（各物流公司运费格读取）
     */
    Boolean insertByBo(ErpProductFreightBo bo);

    /**
     * 修改运费试算模版（各物流公司运费格读取）
     */
    Boolean updateByBo(ErpProductFreightBo bo);

    /**
     * 校验并批量删除运费试算模版（各物流公司运费格读取）信息
     */
    Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);

    /**
     * 根据尺寸判断是否为大包货物
     * @param erpProductExistingFreightRecord
     * @return
     */
    Boolean judgeBaleProduct(ErpProductExistingFreightRecord erpProductExistingFreightRecord);
    Boolean judgeBaleProduct(AeProductFreight aeProductFreight);

    /**
     * 根据菜鸟无忧物流-标准计算运费
     *
     * 该方法已废弃，勿更新！！！！！！！！！！新方法为IErpCommonProductFreightService
     *
     * @param erpProductExistingFreightRecord
     * @return
     */
    BigDecimal calculateFreightByCaiNiao(ErpProductExistingFreightRecord erpProductExistingFreightRecord);

    /**
     * 根据菜鸟无忧物流-标准计算运费
     * @return
     */
	BigDecimal calculateFreightByCaiNiao(String areaNo, String skuWeight, String skuWidth, String skuHeight,
                                         String skuLength, String productAttribute);

	List<ErpProductFreight> countryList();
}
